package datastructure.ch04_stacks.ch02_interface_abstarct;

/**
 * 栈的统一接口
 * 特点：先进后出，后进先出
 *
 * @author guodd
 * @version 1.0
 */
public interface Stack<E> {
    /**
     * 获取栈中元素个数
     *
     * @return 元素个数
     */
    int getSize();

    /**
     * 栈是否为空
     *
     * @return 是否为空
     */
    boolean isEmpty();

    /**
     * 清空栈
     */
    void clear();

    /**
     * 添加元素（入栈-压栈）
     *
     * @param e 入栈元素
     */
    void push(E e);

    /**
     * 删除元素（出栈）
     *
     * @return 删除的元素
     */
    E pop();

    /**
     * 获取栈顶元素（top）
     *
     * @return 栈顶元素
     */
    E peek();
}
